HAL SD I/O operation functions ¶
This section provides information about HAL SD I/O operation functions for STM32 HAL1 to HAL2 migration.
HAL SD transfer blocking transfer (polling) ¶
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd,
uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks,
uint32_t Timeout)
|
hal_status_t HAL_SD_ReadBlocks(hal_sd_handle_t *hsd,
uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr,
uint32_t timeout_ms)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd,
const uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks,
uint32_t Timeout)
|
hal_status_t HAL_SD_WriteBlocks(hal_sd_handle_t *hsd,
const uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr,
uint32_t timeout_ms)
|
HAL SD transfer non-blocking transfer (Interrupt) ¶
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_ReadBlocks_IT(SD_HandleTypeDef *hsd,
uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_ReadBlocks_IT(hal_sd_handle_t *hsd,
uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_WriteBlocks_IT(SD_HandleTypeDef *hsd,
const uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_WriteBlocks_IT(hal_sd_handle_t *hsd,
uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr)
|
HAL SD transfer non-blocking transfer (DMA) ¶
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd,
uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_ReadBlocks_DMA(hal_sd_handle_t *hsd,
uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd,
const uint8_t *pData,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_WriteBlocks_DMA(hal_sd_handle_t *hsd,
uint8_t *p_data,
uint32_t block_addr,
uint32_t blocks_nbr)
|
HAL SD multi-buffer DMA ¶
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_ConfigDMAMultiBuffer(SD_HandleTypeDef *hsd,
uint32_t *pDataBuffer0,
uint32_t *pDataBuffer1,
uint32_t BufferSize)
HAL_StatusTypeDef HAL_SDEx_ReadBlocksDMAMultiBuffer(SD_HandleTypeDef *hsd,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
HAL_StatusTypeDef HAL_SDEx_WriteBlocksDMAMultiBuffer(SD_HandleTypeDef *hsd,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
HAL_StatusTypeDef HAL_SDEx_ChangeDMABuffer(SD_HandleTypeDef *hsd,
HAL_SDEx_DMABuffer_MemoryTypeDef Buffer,
uint32_t *pDataBuffer)
|
Multi-buffering is available only in some STM32 series. These series are not yet supported in HAL2. |
HAL SD linked-list DMA ¶
Important
Linked-list management operations are now unified under the new HAL Q layer. The following tables detail the updated APIs for linked-list handling in HAL SD. For practical guidance, refer to HAL SD linked-list use case.
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_ReadBlocks(SD_HandleTypeDef *hsd,
const SD_DMALinkedListTypeDef *pLinkedList,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_ReadBlocks_LinkedList(hal_sd_handle_t *hsd,
uint32_t block_addr,
uint32_t blocks_nbr,
const hal_q_t *p_q)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_WriteBlocks(SD_HandleTypeDef *hsd,
const SD_DMALinkedListTypeDef *pLinkedList,
uint32_t BlockAdd,
uint32_t NumberOfBlocks)
|
hal_status_t HAL_SD_WriteBlocks_LinkedList(hal_sd_handle_t *hsd,
uint32_t block_addr,
uint32_t blocks_nbr,
const hal_q_t *p_q)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_BuildNode(SD_DMALinkNodeTypeDef *pNode,
SD_DMALinkNodeConfTypeDef *pNodeConf)
|
hal_status_t HAL_SD_FillNodeConfig(hal_sd_node_t *p_node,
void *p_buffer,
uint32_t size_byte)
Note The configuration structure is removed; pass configuration parameters directly. Refer to HAL SD node configuration structure. |
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_InsertNode(SD_DMALinkedListTypeDef *pLinkedList,
SD_DMALinkNodeTypeDef *pPrevNode,
SD_DMALinkNodeTypeDef *pNewNode)
|
Removed; use the HAL Q API HAL_Q_InsertNode(hal_q_t *p_q,
hal_sd_node_t *p_prev_node,
hal_sd_node_t *p_new_node)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_RemoveNode(SD_DMALinkedListTypeDef *pLinkedList,
SD_DMALinkNodeTypeDef *pNode)
|
Removed; use the HAL Q API HAL_Q_RemoveNode(hal_q_t *p_q,
hal_sd_node_t *p_node)
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_LockNode(SD_DMALinkNodeTypeDef *pNode)
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_UnlockNode(SD_DMALinkNodeTypeDef *pNode)
|
hal_status_t HAL_SD_SetNodeDataBufferState(hal_sd_node_t *p_node,
hal_sd_node_state_t state)
Note
Use this API by passing as
By
|
|
HAL1 |
HAL2 |
|---|---|
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_EnableCircularMode(SD_DMALinkedListTypeDef *pLinkedList)
HAL_StatusTypeDef HAL_SDEx_DMALinkedList_DisableCircularMode(SD_DMALinkedListTypeDef *pLinkedList)
|
Removed; use the HAL Q APIs hal_status_t HAL_Q_SetCircularLinkQ_Head(hal_q_t *p_q)
hal_status_t HAL_Q_ClearCircularLinkQ(hal_q_t * p_q)
|